package com.tedu.object.day01;

import javax.lang.model.element.NestingKind;

/**
 * 面向对象--(Object类)--JavaAPI
 * Object类:一切的父类，所有类均继承Object类。超类(父类)！
 * 所有类实现了Object类方法，使用系统一部分提供好的类库！
 * 1.toString()方法   将对象返回为字符串格式(默认调用，不写)
 *   输出方法:hashCode的输出方法，计算出地址值(int) 地址@十六进制表示方法
 * 2.getClass()方法 将对象返回一个类型
 * 3.hashCode()方法 用于返回字符串的哈希码，又叫散列码，它实际上返回一个int整数
 *                  空字符串的哈希码--0 整数值的哈希码是本身，任何类都有哈希码
 *                  提高查找的快捷性
 *                  哈希码：返回就是根据对象的内存地址算一个值
 *                  如果两个对象相同，hashcode值肯定是相同的
 * 4.equals()方法   对比两个对象是否相等(boolean)--使用频率高 判断对象是否相等
 *
 */
public class Object类 {
    public static void main(String[] args) {
        System.out.println("hello");     //sout输出
        Object类 o=new Object类(); //默认继承Object 超类
        System.out.println(o);
        //所有类继承Object超类
        Object[] obj=new Object[4];   //创建Object数组：4个空对象
        obj[0]="字符串";
        obj[1]=123;
        obj[2]=true;
        obj[3]=new Object类();
        //遍历所有的元素值:hashcode写法：类型+十六进制
        for(Object ob:obj){ //增强for:所有类型一致(所有类都继承与Object类)
            System.out.println(ob.toString()+"lorem");
            System.out.println(ob.getClass());   //类型值
            System.out.println(ob.hashCode()+"------------");   //哈希值
        }
        //String s=new String("字符串");
       // System.out.println(s);
        //建议 重写equals 建议重写hashcode
        Demo d=new Demo();
        System.out.println(d);
        Demo1 d1=new Demo1();
        //Demo类型跟Demo1类是否相等 使用 equals()方法
        System.out.println(d.equals(d1)) ; //false
        //对象对比实际对比:地址值(hashcode),Demo Demo1 哈希值不相同
        //如果判断两个类是否相等:建议重写euqals()方法 属性、方法
        //哈希值通过类：属性、方法换算来的，判断两个类完全一致，哈希值一致
        //判断两个值所有属性完全一致--重写 对比两个China属性
    }
}
//类
class Demo extends Object{
    //重写Object的toString方法 不想打印默认地址值
    public String toString(){
    return "这是一个人";
    }
}
class Demo1{}